package fr.univ.lr.icone.agents;

public class Agent implements IAgent {

	private int id;
	private int x;
	private int y;
	private int opinion;
	private int confiance;

	// Constructeur
	public Agent(int ident) {
		this.id = ident;
		this.opinion = 1 + (int) (Math.random() * 4); // Compris entre 1 et 5
		this.confiance = (int) (Math.random() * 10); // Compris entre 0 et 9
		this.x = 0;
		this.y = 0;

		/* System.out.println("Constructeur OK (1/1)"); */
	}

	public Agent(int ident, int op, int cf, int x, int y) throws Exception {

		this.id = ident; // Identifiant de l'agent
		// this.opinion = op;
		// this.confiance = cf;

		// Opinion est entre 1 et 5 ? - OUI : Affectation de la valeur - NON :
		// Rapport d'erreur
		if ((op < 0) || (op > 9)) {
			throw new Exception("Erreur dans la valeur opinion");
		} else {
			this.opinion = op;
		}
		// Confiance est entre 0 et 9 ? - OUI : Affectation de la valeur - NON :
		// Rapport d'erreur
		if ((cf < 1) || (cf > 5)) {
			throw new Exception("Erreur dans la valeur confiance");
		} else {
			this.confiance = cf;
		}

		this.x = x; // Position en X
		this.y = y; // Position en Y

		/* System.out.println("Constructeur OK (2/2)"); */
	}

	// Get & Set

	/**
	 * @return Agent position X
	 */
	public int getX() {
		return this.x;
	}

	/**
	 * @return Agent position Y
	 */
	public int getY() {
		return this.y;
	}

	/**
	 * @return Agent opinion
	 */
	public int getOpinion() {
		return this.opinion;
	}

	/**
	 * @return Agent Confiance
	 */
	public int getConfiance() {
		return this.confiance;
	}

	/**
	 * @return Agent identification
	 */
	public int getId() {
		return this.id;
	}

	/**
	 * @param x
	 */
	public void setX(int x) {
		this.x = x;
	}

	/**
	 * @param y
	 */
	public void setY(int y) {
		this.y = y;
	}
	
	/**
	 * 
	 * @param newConfiance
	 */

	public void setConfiance(int newConfiance) {
		this.confiance = newConfiance;
	}

	/**
	 * @param newOpinion
	 */
	public void setOpinion(int newOpinion) {
		this.opinion = newOpinion;
	}

	public String toString() {
		return "\nAgent [ id " + this.id + " | confiance " + this.confiance
				+ " | opinion " + this.opinion + " | x " + this.x + " | y "
				+ this.y + " ]";
	}
}